using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using AEL.APU;
using AEL.BOD;
using AEL.COM;
using AEL.INT;
using BEL;
    
    namespace DEL.APU
    {
    /// <summary>
    /// Acceso a la base de datos
    /// Modulo:Proyectos 
    /// Tabla:Apu_Pedido_Estructura
    /// </summary>
    public  class DO_Apu_Pedido_Estructura
    {
    #region Adapter
        private static CEL.APU.DO_Apu_Pedido_Estructura _adpApu_Pedido_Estructura;
        private static CEL.APU.DO_Apu_Pedido_Estructura adpApu_Pedido_Estructura
        {
            get
            {
                if (_adpApu_Pedido_Estructura == null)
                    _adpApu_Pedido_Estructura = new CEL.APU.DO_Apu_Pedido_Estructura();
                return _adpApu_Pedido_Estructura;
            }
        }

        private static CEL.APU.DO_Apu_Pedido_Estructura_Det _adpApu_Pedido_Estructura_Det;
        private static CEL.APU.DO_Apu_Pedido_Estructura_Det adpApu_Pedido_Estructura_Det
        {
            get
            {
                if (_adpApu_Pedido_Estructura_Det == null)
                    _adpApu_Pedido_Estructura_Det = new CEL.APU.DO_Apu_Pedido_Estructura_Det();
                return _adpApu_Pedido_Estructura_Det;
            }
        }

        private static CEL.APU.DO_Apu_Estructura_Material _adpApu_Estructura_Material;
        private static CEL.APU.DO_Apu_Estructura_Material adpApu_Estructura_Material
        {
            get
            {
                if (_adpApu_Estructura_Material == null)
                    _adpApu_Estructura_Material = new CEL.APU.DO_Apu_Estructura_Material();
                return _adpApu_Estructura_Material;
            }
        }
    #endregion
    
    #region Operaciones 
    
   
    public static string Insert(Scope s, Apu_Pedido_Estructura oApu_Pedido_Estructura)
    {
    
        // Inserto los objetos
        string resultado;
        try
        {
            adpApu_Pedido_Estructura.Adapter.BeginTransaction();
            adpApu_Pedido_Estructura_Det.Adapter.Transaction = adpApu_Pedido_Estructura.Adapter.Transaction;
            adpApu_Estructura_Material.Adapter.Transaction = adpApu_Pedido_Estructura.Adapter.Transaction;
           
           // Insertar Apu_Pedido_Estructura
            resultado = adpApu_Pedido_Estructura.Insert(s, oApu_Pedido_Estructura);

            //Inserto Apu_Pedido_Estructura_Det

            List<Apu_Estructura_Material> listMaterial = adpApu_Estructura_Material.GetByEstructura(s, oApu_Pedido_Estructura.Apu_Estructura_Id);
            foreach(Apu_Estructura_Material v_Material in listMaterial)
            {
            Apu_Pedido_Estructura_Det oApu_Pedido_Estructura_Det = new Apu_Pedido_Estructura_Det();

                 
            oApu_Pedido_Estructura_Det.Apu_Pedido_Estructura_Id= oApu_Pedido_Estructura.Id;
            oApu_Pedido_Estructura_Det.Apu_Material_Id = v_Material.Apu_Material_Id;
            oApu_Pedido_Estructura_Det.Cantidad = 0;
            oApu_Pedido_Estructura_Det.Bod_Unidad_Id = v_Material.Bod_Unidad_Id;

               
                adpApu_Pedido_Estructura_Det.Insert(s, oApu_Pedido_Estructura_Det);
            }
            adpApu_Pedido_Estructura.Adapter.CommitTransaction();
            }
            catch (Exception e)
            {
                adpApu_Pedido_Estructura.Adapter.RollbackTransaction();
                throw (e);
            }
            return resultado;
       }
    
    //public int Delete(Scope s,  Apu_Pedido_Estructura o)
   // {
   // }
        
    //public int Update(Scope s, Apu_Pedido_Estructura o, Apu_Pedido_Estructura original)
    //{
     
    //}
    #endregion
    }
    }
